A guide to the C3 CAOS language:
Part1 : Introduction to syntax and and stuff..
[please turn wordwrap off!]

Obviously, any prior experience in programming is going to be benificial here,  but I'm pretty confident with my,
 terribble typos, enough feedback and revisions that this guide might prove pretty handy sometime.

First though, I'd like to run over a few different variable types, just incase.
(yeah it gets more exciting, but you need to know this!)

Variables are places where the game stores information, i.e. how high the carrot is, how
 old a norn is, what time it is, or any sort of data at all. 

Though you don't really need to worry much how the game stores these, it is a good idea to
know your ass from your elbow to begin with.

Variables come in a few types, Strings, Numbers and in the case of creatures, agents too.

	STRINGS: Consider strings, a long string of charachters(letters and numbers) joined together to
	produce something readable. In general, strings are things which can be read and written, but
	they are not numbers, which can be calculated , etc.
	 I.e.  "Greetings to the CC" is a string, as is "10 jellyfish",  "Satan666" , and "345".

	Note that these numbers included, even "345" (while it is a string) should not be considered a number.

	NUMBERS: We all know what they are, and the game kindly doesn't worry about positive/negative numbers 
	and decimal points for the most part :D.  The difference between  345 and "345" though is that 345 	is a number, 
	and if you add one to it you will get 346.... You can't add 1 to "345", cause the game 	thinks it's text.  
	That's like trying to ask it to multiply "moop" by two.. you just can't!


	AGENTS: This isn't standard to most any programming language, but with CAOS you'll be glad they're 	
	there. An agent in creatures is most ANYTHING you see in the world, from Norns, to the Hand,
	 to Butterflies, to the doors.  The only exclusion would be the background.


You'll see quite clearly why you need to know the difference between stings and things later on :)

The game has a few ways of storing variables... for example..

o-   ov01, ov02, ov03.  upto ov99

o-   va01, va02, va03 upto va99

o-   and then of course there's the global variables.


Something on scripts before variable types are explained...

Lets use the word agent and object interchangable here , unless I say otherwise.
Now, you already know that everything in Creatures (just about) revolves around scripts;
scripts written in CAOS. And each script will control how the object/agent is controlled.

The variables of type ov00 are specific to the single target object. And will not affect
	any other object in the game. Here's an example, say the target object for this script
	is an egg (more on targets later), the game must know somewhere whether the egg is
	a male, a female or random... This information is stored in an Object Variable (ov).
	In this case, the egg uses it's ov01. The sex all depends on what's stored i ov01.

	If ov01 were to be 1 (i.e. the number 1 was stored) , the egg will be female.. if it is 2,
	the egg is random, and if it's 0 , the egg is male.  So it's handy to think of
	the object variables as sub-parts to the object. these subparts are what each
	object needs stored about it's self.
	Object variables are specific however to each object, and ov01 for say , the egg Harriet laid
	five mins ago, will maybe be different to ov01 for the egg Tania laid just this minute, since
	they might well be different sexes.

	Other object variables, i.e. ov03 , might represent how big the egg is currently.

General variables, however, are not specific to any singluar object, but only to the script
	that is currently running. I.e. Immagine the program is going to set all of the eggs in the game
	to female..  The script would go something like:

	set the value of va66 to 1   (any va  variable number can be used at this point)
	select first egg
	set ov01 (sex) to the value stored in va66 . (i.e. ov01 becomes 1)
	select the next egg and repeat.

	Okay, that was a bit of a useless example, but va66, or whatever variable you use will be the 	
	same nomatter which object is being used, but only throught this script!
	When the game executes another script, it will use the va66 value specified there, or
	va55, or va23 etc...


The last type come in the form of "c3_max_norns". Any script can read off this variable, which makes it 	
	really handy for things like the egglayer to say to itsself.. "Hey, have we hit the maximum nomber 	of norns yet?"
	For example if "C3_max_norns" was equal to 12, the incubator would suck it'sself back in and 	
	eggs would stop hatching untill another norn was removed.  
	You can now see how variables like this can be accessed by the Egg hatching script *and* the 	
	incubators scripts. 
	Unlike ov and va, the values remain unchanged at all times, and accessible by any script.


Right, that's all Im going to preach on variables for now. It's time to do some caos. :)

_______________________________________________
First Edition.. I.e. nobody has commented on this yet! Feel free to do so on the albia200.com
forums, or by email.
Should you wish to reproduce this file in whole or part, please include this message somewhere
linking to the original download site:   wopsy.wopstick.com/jcs Thanks :)
